﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DTO_MechSys;
using BLL_MechSys;

namespace FORMS_MechSys
{
    public partial class frmFormaPagementoCadastro : Form
    {
        System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmFormaPagementoCadastro));

        DataTable dataTableGridView = new DataTable();
        List<DTOPagamento> ListPagamentos = new List<DTOPagamento>();

        DTOPagamento dtoPagamentoADD = new DTOPagamento();
        BLLPagamento bllPagamento = new BLLPagamento();



        DTOCor dtoCorPrincipal = new DTOCor();
        DTOCor dtoCorFundo = new DTOCor();
        DTOCor dtoCorLetra = new DTOCor();
        DTOCor dtoCorDataGrid = new DTOCor();

        BLLCor bllCor = new BLLCor();

        public frmFormaPagementoCadastro()
        {
            InitializeComponent();
            SetColors();
            PopulaGrid();
            Habilitar(false);
        }

        private void SetColors()
        {
            dtoCorPrincipal = bllCor.Buscar("Principal");

            btnCancelar.BackColor = tlpMenuStripLeft.BackColor = 
                tlpMenuStripRigth.BackColor = tlpMenuStripCenter.BackColor = btnSair.BackColor =
                tableLayoutPanel6.BackColor = tableLayoutPanel4.BackColor = btnNovo.BackColor =
                btnSalvar.BackColor = btnEditar.BackColor = btnExcluir.BackColor = btnExcluir.BackColor = dtoCorPrincipal.Cor;

            dtoCorFundo = bllCor.Buscar("Fundo");
            tlpMenuStrip.BackColor = dtoCorFundo.Cor;

            dtoCorDataGrid = bllCor.Buscar("DataGrid");
            dtGridProdutos.BackgroundColor = dtoCorDataGrid.Cor;

            dtoCorLetra = bllCor.Buscar("Letra");
            label14.ForeColor = label8.ForeColor = label9.ForeColor = label7.ForeColor =
               btnNovo.ForeColor = btnSalvar.ForeColor =
                btnEditar.ForeColor = btnCancelar.ForeColor = btnExcluir.ForeColor = dtoCorLetra.Cor;

        }

        //EFEITOS
        #region

        #region Mouse Leave
        private void btnEditar_MouseLeave(object sender, EventArgs e)
        {
            if (btnEditar.Enabled)
            {
                btnEditar.BackColor = dtoCorPrincipal.Cor;
                btnEditar.ForeColor = Color.White;
                this.btnEditar.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btnEditar.BackgroundImage")));
            }
        }

        private void btnEditarkkkkkkk(object sender, EventArgs e)
        {
            btnEditar.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(194)))), ((int)(((byte)(224)))), ((int)(((byte)(255)))));
            btnEditar.ForeColor = Color.Black;
            this.btnEditar.BackgroundImage = ((System.Drawing.Image)(null));
        }

        private void btnCancelar_MouseLeave(object sender, EventArgs e)
        {
            if (btnCancelar.Enabled)
            {
                btnCancelar.BackColor = dtoCorPrincipal.Cor;
                btnCancelar.ForeColor = Color.White;
                this.btnCancelar.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btnEditar.BackgroundImage")));
            }
        }

        private void btnCancelarkkkkkkk(object sender, EventArgs e)
        {
            btnCancelar.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(194)))), ((int)(((byte)(224)))), ((int)(((byte)(255)))));
            btnCancelar.ForeColor = Color.Black;
            this.btnCancelar.BackgroundImage = ((System.Drawing.Image)(null));
        }

        private void btnExcluir_MouseLeave(object sender, EventArgs e)
        {
            if (btnExcluir.Enabled)
            {
                btnExcluir.BackColor = dtoCorPrincipal.Cor;
                btnExcluir.ForeColor = Color.White;
                this.btnExcluir.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btnEditar.BackgroundImage")));
            }
        }

        private void btnExcluirkkkkkkk(object sender, EventArgs e)
        {
            btnExcluir.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(194)))), ((int)(((byte)(224)))), ((int)(((byte)(255)))));
            btnExcluir.ForeColor = Color.Black;
            this.btnExcluir.BackgroundImage = ((System.Drawing.Image)(null));

        }

        private void btnSalvar_MouseLeave(object sender, EventArgs e)
        {
            if (btnSalvar.Enabled)
            {
                btnSalvar.BackColor = dtoCorPrincipal.Cor;
                btnSalvar.ForeColor = Color.White;
                this.btnSalvar.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btnEditar.BackgroundImage")));
            }
        }

        private void btnSalvarkkkkkkk(object sender, EventArgs e)
        {
            btnSalvar.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(194)))), ((int)(((byte)(224)))), ((int)(((byte)(255)))));
            btnSalvar.ForeColor = Color.Black;
            this.btnSalvar.BackgroundImage = ((System.Drawing.Image)(null));
        }

        private void btnNovo_MouseLeave(object sender, EventArgs e)
        {
            if (btnNovo.Enabled)
            {
                btnNovo.BackColor = dtoCorPrincipal.Cor;
                btnNovo.ForeColor = Color.White;
                this.btnNovo.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btnEditar.BackgroundImage")));
            }
        }

        private void btnNovokkkkkkk(object sender, EventArgs e)
        {
            btnNovo.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(194)))), ((int)(((byte)(224)))), ((int)(((byte)(255)))));
            btnNovo.ForeColor = Color.Black;
            this.btnNovo.BackgroundImage = ((System.Drawing.Image)(null));
        }

        #endregion
        #region Enabled Changed
        private void btnNovo_EnabledChanged(object sender, EventArgs e)
        {
            if (btnNovo.Enabled)
            {
                btnNovo.BackColor = dtoCorPrincipal.Cor;
                btnNovo.ForeColor = Color.White;
                this.btnNovo.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btnEditar.BackgroundImage")));
                btnNovo.BackColor = dtoCorPrincipal.Cor;
            }
            else
                btnNovo.BackColor = dtoCorFundo.Cor;

        }

        private void btnEditar_EnabledChanged(object sender, EventArgs e)
        {
            if (btnEditar.Enabled)
            {
                btnEditar.BackColor = dtoCorPrincipal.Cor;
                btnEditar.BackColor = dtoCorPrincipal.Cor;
                btnEditar.ForeColor = Color.White;
                this.btnEditar.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btnEditar.BackgroundImage")));

            }
            else
                btnEditar.BackColor = dtoCorFundo.Cor;
        }

        private void btnCancelar_EnabledChanged(object sender, EventArgs e)
        {
            if (btnCancelar.Enabled)
            {
                btnCancelar.BackColor = dtoCorPrincipal.Cor;

                btnCancelar.BackColor = dtoCorPrincipal.Cor;
                btnCancelar.ForeColor = Color.White;
                this.btnCancelar.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btnEditar.BackgroundImage")));

            }
            else
                btnCancelar.BackColor = dtoCorFundo.Cor;
        }

        private void btnExcluir_EnabledChanged(object sender, EventArgs e)
        {
            if (btnExcluir.Enabled)
            {

                btnExcluir.BackColor = dtoCorPrincipal.Cor;
                btnExcluir.ForeColor = Color.White;
                this.btnExcluir.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btnEditar.BackgroundImage")));

            }
            else
                btnExcluir.BackColor = dtoCorFundo.Cor;
        }

        private void btnSalvar_EnabledChanged(object sender, EventArgs e)
        {
            if (btnSalvar.Enabled)
            {
                btnSalvar.BackColor = dtoCorPrincipal.Cor;
                btnSalvar.ForeColor = Color.White;
                this.btnSalvar.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btnEditar.BackgroundImage")));
            }
            else
                btnSalvar.BackColor = dtoCorFundo.Cor;
        }
        #endregion

        #region Click

        private void btnNovo_Click(object sender, EventArgs e)
        {
            Habilitar(true);
            Limpar();
            dtoPagamentoADD.PagamentoID = 0;

            txtDescricao.Focus();
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            Habilitar(false);
            Limpar();
        }

        private void btnSalvar_Click(object sender, EventArgs e)
        {
            dtoPagamentoADD.Descricao = txtDescricao.Text;
            if (!string.IsNullOrWhiteSpace(txtDescricao.Text))
                dtoPagamentoADD.Descricao = (txtDescricao.Text);
            int numeroParcela;
            double valorParcela, juros;
            Int32.TryParse(txtNumeroMaxParcela.Text, out numeroParcela);
            Double.TryParse(txtValorMinParcela.Text, out valorParcela);
            Double.TryParse(textBox1.Text, out juros);
            dtoPagamentoADD.NumeroMaxParcela = numeroParcela;
            dtoPagamentoADD.ValorMinParcela = valorParcela;
            dtoPagamentoADD.Juros = juros;


            if (dtoPagamentoADD.PagamentoID == 0)
                bllPagamento.Inserir(dtoPagamentoADD);
            else
                bllPagamento.Atualizar(dtoPagamentoADD);
            Limpar();
            PopulaGrid();
            Habilitar(false);
        }

        private void toolStripButtonSair_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btn_pesquisar_Click(object sender, EventArgs e)
        {
            int cod = new int();

            Int32.TryParse(txtPesquisar.Text, out cod);
            PopulaGrid(txtPesquisar.Text + "%", cod);

        }

        private void btnExcluir_Click(object sender, EventArgs e)
        {
            if (new frmMessageBox().Show("Tem certeza que deseja apagar esta Pagamento permanentemente?", "Aviso", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning) == System.Windows.Forms.DialogResult.Yes)
            {
                dtGridProdutos_CellClick(null, null);
                bllPagamento.Excluir(dtoPagamentoADD.PagamentoID);
                Limpar();
                Habilitar(false);
                PopulaGrid();
                dtGridProdutos_CellClick(null, null);
            }
        }

        private void btnEditar_Click(object sender, EventArgs e)
        {
            dtGridProdutos_CellClick(null, null);
            Habilitar(true);
            txtDescricao.Focus();
        }

        #endregion

        #endregion

        public void Limpar()
        {
            txtCodigo.Clear();
            txtDescricao.Clear();
            txtPesquisar.Clear();
            txtNumeroMaxParcela.Clear();
            txtValorMinParcela.Clear();
            textBox1.Clear();
        }

        public void Habilitar(bool status)
        {
            tlp_dados.Enabled = status;
            btnNovo.Enabled = !status;
            btnEditar.Enabled = !status;
            btnExcluir.Enabled = !status;
            btnCancelar.Enabled = status;
            btnSalvar.Enabled = status;

            if (dtGridProdutos.Rows.Count <= 0)
            {
                btnEditar.Enabled = false;
                btnExcluir.Enabled = false;
            }
        }

        public void PopulaGrid()
        {
            DataRow dataRow;
            dataTableGridView = new DataTable();
            ListPagamentos = bllPagamento.BuscarPagamentosCadastrados();
            if (ListPagamentos.Count > 0)
            {
                dataTableGridView.Columns.Add("PagamentoID", typeof(int));
                dataTableGridView.Columns.Add("Descrição", typeof(string));
                dataTableGridView.Columns.Add("Máximo Parcela", typeof(string));
                dataTableGridView.Columns.Add("Juros Mês", typeof(string));
                dataTableGridView.Columns.Add("Valor Mínimo", typeof(string));

                foreach (DTOPagamento dtoPagamento in ListPagamentos)
                {
                    dataRow = dataTableGridView.NewRow();

                    dataRow["PagamentoID"] = dtoPagamento.PagamentoID;
                    dataRow["Descrição"] = dtoPagamento.Descricao;
                    dataRow["Máximo Parcela"] = dtoPagamento.NumeroMaxParcela;
                    dataRow["Juros Mês"] = dtoPagamento.Juros + " %";
                    dataRow["Valor Mínimo"] = dtoPagamento.ValorMinParcela;

                    // Adiciona linha ao DataTable.
                    dataTableGridView.Rows.Add(dataRow);
                }
            }
            dtGridProdutos.DataSource = null;
            dtGridProdutos.DataSource = dataTableGridView;


        }

        public void PopulaGrid(string descricao, int codigo)
        {
            DataRow dataRow;
            dataTableGridView = new DataTable();

            ListPagamentos = bllPagamento.PesquisarPagamento(descricao, codigo);
            if (ListPagamentos.Count > 0)
            {
                dataTableGridView.Columns.Add("PagamentoID", typeof(int));
                dataTableGridView.Columns.Add("Descrição", typeof(string));


                foreach (DTOPagamento dtoPagamento in ListPagamentos)
                {
                    dataRow = dataTableGridView.NewRow();

                    dataRow["PagamentoID"] = dtoPagamento.PagamentoID;
                    dataRow["Descrição"] = dtoPagamento.Descricao;

                    // Adiciona linha ao DataTable.
                    dataTableGridView.Rows.Add(dataRow);
                }
            }
            dtGridProdutos.DataSource = null;
            dtGridProdutos.DataSource = dataTableGridView;

        }

        private void dtGridProdutos_DataSourceChanged(object sender, EventArgs e)
        {
            if (dtGridProdutos.Rows.Count > 5)
                this.WindowState = FormWindowState.Maximized;

            if (dtGridProdutos.Rows.Count <= 0)
            {
                btnEditar.Enabled = false;
                btnExcluir.Enabled = false;
            }
        }

        private void dtGridProdutos_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dtGridProdutos.CurrentCellAddress.X != -1 && dtGridProdutos.CurrentCellAddress.Y != -1)
            {
                dtoPagamentoADD.PagamentoID = Int32.Parse(dtGridProdutos.Rows[dtGridProdutos.CurrentCellAddress.Y].Cells["PagamentoID"].Value.ToString());
                txtCodigo.Text = dtoPagamentoADD.PagamentoID.ToString();
                txtDescricao.Text = dtGridProdutos.Rows[dtGridProdutos.CurrentCellAddress.Y].Cells["Descrição"].Value.ToString();
                txtNumeroMaxParcela.Text = dtGridProdutos.Rows[dtGridProdutos.CurrentCellAddress.Y].Cells["Máximo Parcela"].Value.ToString();
                textBox1.Text = dtGridProdutos.Rows[dtGridProdutos.CurrentCellAddress.Y].Cells["Juros Mês"].Value.ToString().Replace("%", "");
                txtValorMinParcela.Text = dtGridProdutos.Rows[dtGridProdutos.CurrentCellAddress.Y].Cells["Valor Mínimo"].Value.ToString();


                Habilitar(false);
                btnEditar.Enabled = true;
            }
        }

        private void txtPesquisar_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
                btn_pesquisar_Click(null, null);
        }

    }
}
